/**
 * 
 */
package com.armail.client.di.modules;

import javafx.stage.Stage;

import com.armail.client.ARMailApp;
import com.armail.client.controller.ARMailController;
import com.armail.client.controller.ComposeMailController;
import com.armail.client.controller.DraftsController;
import com.armail.client.controller.InboxController;
import com.armail.client.controller.LoginController;
import com.armail.client.controller.NavigationController;
import com.armail.client.controller.RegistrationController;
import com.armail.client.controller.SentItemsController;
import com.armail.client.controller.impl.ARMailControllerImpl;
import com.armail.client.controller.impl.ComposeMailControllerImpl;
import com.armail.client.controller.impl.DraftsControllerImpl;
import com.armail.client.controller.impl.InboxControllerImpl;
import com.armail.client.controller.impl.LoginControllerImpl;
import com.armail.client.controller.impl.NavigationControllerImpl;
import com.armail.client.controller.impl.RegistrationControllerImpl;
import com.armail.client.controller.impl.SentItemsControllerImpl;
import com.armail.client.view.ARMailView;
import com.armail.client.view.ComposeMailView;
import com.armail.client.view.DraftsView;
import com.armail.client.view.InboxView;
import com.armail.client.view.LoginView;
import com.armail.client.view.NavigationView;
import com.armail.client.view.RegistrationView;
import com.armail.client.view.Root;
import com.armail.client.view.SentItemsView;
import com.armail.client.view.ViewManager;
import com.armail.client.view.impl.ViewManagerImpl;
import com.armail.client.view.javafx.FXARMailView;
import com.armail.client.view.javafx.FXComposeMailView;
import com.armail.client.view.javafx.FXDraftsView;
import com.armail.client.view.javafx.FXInboxView;
import com.armail.client.view.javafx.FXLoginView;
import com.armail.client.view.javafx.FXNavigationView;
import com.armail.client.view.javafx.FXRegistrationView;
import com.armail.client.view.javafx.FXSentItemsView;

/**
 * @author arpit
 *
 */
public class ARMailModule extends HeadlessModule {

	@Override
	protected void configure() {
		super.configure();
		
		//Extra
		bind(ViewManager.class).to(ViewManagerImpl.class);
		bind(Stage.class).annotatedWith(Root.class).toInstance(ARMailApp.getInstance().getStage());
		
		//Controllers
		bind(ARMailController.class).to(ARMailControllerImpl.class);
		bind(LoginController.class).to(LoginControllerImpl.class);
		bind(NavigationController.class).to(NavigationControllerImpl.class);
		bind(InboxController.class).to(InboxControllerImpl.class);
		bind(ComposeMailController.class).to(ComposeMailControllerImpl.class);
		bind(SentItemsController.class).to(SentItemsControllerImpl.class);
		bind(DraftsController.class).to(DraftsControllerImpl.class);
		bind(RegistrationController.class).to(RegistrationControllerImpl.class);
		
		//Views
		bind(ARMailView.class).to(FXARMailView.class);
		bind(LoginView.class).to(FXLoginView.class);
		bind(NavigationView.class).to(FXNavigationView.class);
		bind(InboxView.class).to(FXInboxView.class);
		bind(ComposeMailView.class).to(FXComposeMailView.class);
		bind(SentItemsView.class).to(FXSentItemsView.class);
		bind(DraftsView.class).to(FXDraftsView.class);
		bind(RegistrationView.class).to(FXRegistrationView.class);
		
	}
}
